Schakel 2 - De online quiz

quiz

Schakel 2 de online quiz

De tweede schakel in mijn project is de quiz. Hier is het doel om minstens 5/10 te halen. De vragen zijn techinsche vragen.


Details van Schakel 2

De quiz heb ik geprogrammeerd ik thonny, en heb dan gewerkt met de bibliotheek tkinter. Deze zorgt dat ik labels kan aanmaken tekstvakken etc. Met behulp van mijn eerdere kennis van dit gebeuren en de hulpt van W3 schools heb ik dit kunnen realiseren. Ik heb gekozen voor navy blue als achtergrond kleur. En als je 5/10 hebt komt er een textbox tevoorschijn waar opstaat ga door naar de volgende schakel.

Gebruikte Materialen

Stappenplan

  1. De gebruiker vult de vragen in
  2. De gebruiker klikt op de knop controleer.
  3. De Computer kijkt of je meer dan 5/10 hebt is dat niet zo dan moet je opnieuw proberen is het wel zo dan kan je door naar de volgende schakel.

Code Voorbeeld


from tkinter import * # Importeer de tkinter module.
from tkinter import messagebox #Importeer messagebox -> waarschuwings vakjes.

class TechQuiz: # Naam van de quiz
    def __init__(self, root): #Definiƫren van de klasse.
        self.root = root # Je zegt hier dat self.root het zelfde is als het typen van root.
        self.root.title('Technologie Quiz') # De titel die bovenaan staat is Technologie quiz.
        self.root.geometry('800x700') #De geometrie is 800x700 pixels, dit is van het quiz kader.
        self.root.configure(bg='#001F3F') #Achtergrond kleur.


        self.label = Label(root, text='Technologie Quiz', bg='#001F3F', fg='white', font=('Arial', 24, 'bold'))#Dit zegt hoe de witte title er uitziet.
        self.label.place(x=400, y=20, anchor='center')# Dit geeft de plaats van de titel aan.

        self.vragen = [ # Vragen die moeten worden beantwoord.
            "Wie is de CEO van Tesla Motors?",
            "Waar staat CPU voor?",
            "In welk jaar werd de programmeertaal Python voor het eerst uitgebracht?",
            "Waar staat HTML voor?",
            "Wie is de mede-oprichter van Microsoft?",
            "Wat is de volledige betekenis van USB?",
            "Waar staat ISP voor in termen van computertechnologie?",
            "Wat is de codenaam voor de nieuwste versie van Android?",
            "Waar staat HTTP voor?",
            "Wat is het belangrijkste bestanddeel van glas?"]

        self.antwoorden = [ #Antwoorden van de vragen.
            "Elon Musk",
            "Central Processing Unit",
            "1991",
            "Hypertext Markup Language",
            "Bill Gates",
            "Universal Serial Bus",
            "Internet Service Provider",
            "Android 12",
            "Hypertext Transfer Protocol",
            "Silicium"]

        # Vraaglabels en invoervelden
        self.labels = [] #Dit is een lijst waarin de labels worden opgeslagen die de vragen van de quiz weergeven.
        self.entries = []#Dit is een lijst waarin de invoervelden worden opgeslagen waar gebruikers hun antwoorden kunnen typen.
        for i, vraag in enumerate(self.vragen):# functie geeft de index en het bijbehorende element van een iterable terug (Gezocht op het internet): https://nl.wikipedia.org/wiki/Enumeratie_(datatype)#:~:text=Een%20enumeratie%20of%20opsomming%20is%20een%20datatype%20in,aannemen%2C%20die%20met%20een%20identifier%20kunnen%20worden%20aangeduid.
            label = Label(root, text=f'{vraag}', font=('Arial', 12), bg='#001F3F', fg='white', anchor='w')# Label tekst van de vraag, acnchor = uitlijning. Fg =  Voorgrondkleur
            label.place(x=50, y=100 + i * 50)# Geeft de plaats van de vraag aan, i komt van enumerate.
            self.labels.append(label)# Elk aangemaakte label wordt toegevoegd aan deze lijst, dit wordt later gebruikt. 
            entry = Entry(root, font=('Arial', 12), bg='white', fg='#001F3F', width=40) #Lay-out van ingeefvak.
            entry.place(x=400, y=100 + i * 50)#Hier opnieuw de plaats.
            self.entries.append(entry) # Geeft de plaats van de vraag aan, i komt van enumerate.

    
        self.button = Button(root, text="Indienen", font=('Arial', 12, 'bold'), bg='white', fg='#001F3F', width=10, command=self.controleer_antwoorden)#Lay-out van de indien knop, er zit ook nog een opdracht bij om de antwoorden te controloren.
        self.button.place(x=400, y=600, anchor='center')#plaats van de knop.

    def controleer_antwoorden(self):# Opdracht het controleren van de opdrachten.
        antwoorden = [entry.get().strip() for entry in self.entries] #Lijst voor de antwoorden te controleren.
        score = sum(1 for gegeven_antwoord, juist_antwoord in zip(antwoorden, self.antwoorden) if gegeven_antwoord.lower() == juist_antwoord.lower()) #Dit controleert de antwoorden, en geeft een score.
        if score >= 5: #Als de score meer is dan 5 of gelijk aan 5.
            messagebox.showinfo('Quiz Resultaat', f'Je score is {score} van de {len(self.vragen)} vragen.\nGefeliciteerd! Je hebt meer dan de helft correct!')#Maak dan een message box.
        else:#Anders en dus lager dan 5
            messagebox.showerror('Quiz Resultaat', f'Je score is {score} van de {len(self.vragen)} vragen.\nJe moet minstens 5 van de 10 vragen correct beantwoorden om door te gaan. Probeer het opnieuw.')#Maak een andere message box.

            self.root.destroy()# Maak alles zogezegd kapot.
            root = Tk()
            quiz_window = TechQuiz(root)#De quiz begint opnieuw.
            root.mainloop()#De loop begint

if __name__ == "__main__":
    root = Tk()
    quiz_window = TechQuiz(root)#Begin opnieuw.
    root.mainloop()#Hoofdloop start opnieuw.


    

Foto's 3d prints

foto 1 foto 2 quiz

Vragen ?

Google forms

Handinge links

HOMEPAGINA Hoe heb ik de kist gemaakt.